【初心者向け】各OSのTCP通信チェックコマンド入門
最新版は以下となります。 https://dev.classmethod.jp/etc/ec2-tcp-port-check-command-2018/
こんにちはコカコーラ好きの梶です。
EC2では色々なOSが構築できますよね。構築後の通信確認はどのように実施してますか?
各OSで他のインスタンスへTCP通信確認のために、ツールをインストールしたり、ICMPなどの別なプロトコルで確認するためにSecurity Groupを一時解放していませんか?
構築直後の状態で、簡単にTCPポート疎通確認可能なコマンドをご紹介します。
Amazon Linux,Ubuntu,Windows2012R2,CentOSについて自分も忘れやすいのでまとめてみました。
どなたかのお役に立てれば幸いです。
Amazon Linux
動作確認AMI:amzn-ami-hvm-2014.09.2.x86_64-ebs (ami-18869819)
nc(netcat)コマンドを利用します。
単体ポート(80番HTTPの通信確認)
nc -zv <ipaddress> 80
複数ポート(22、80、8080の通信確認)
nc -zv <ipaddress> 22 80 8080
ポートレンジ指定
nc -zv <ipaddress> 20-30
成功時
[ec2-user@ip-10-10-10-218 ~]$ nc -zv <ipaddress> 22 Connection to <ipaddress> 22 port [tcp/ssh] succeeded!
失敗時
[ec2-user@ip-10-10-10-218 ~]$ nc -zv <ipaddress> 80 nc: connect to <ipaddress> port 80 (tcp) failed: Connection timed out
Ubuntu
動作確認AMI:ubuntu-trusty-14.04-amd64-server-20150123 (ami-20b6aa21)
Amazon Linuxと同様に nc(netcat)コマンドを利用します。
成功時
ubuntu@ip-10-10-10-34:~$ nc -zv <ipaddress> 22 Connection to <ipaddress> 22 port [tcp/ssh] succeeded!
失敗時
ubuntu@ip-10-10-10-34:~$ nc -zv <ipaddress> 80 nc: connect to <ipaddress> port 80 (tcp) failed: Connection timed out
Windows 2012R2
Windows_Server-2012-R2_RTM-English-64Bit-Base-2015.02.11 (ami-a79572a7)
定番だったTelnetコマンドがインストールされていないため、FTP コマンドを利用します。ポートを1個づつチェックします。
成功時
C:\>ftp ftp> open <ip address> 80 Connected to <ip address>. (ここで [Ctrl+C] を押下すると「Aborting any active data connections...」と表示されて中止できる。) Connection closed by remote host. ftp> bye
失敗時
C:\>ftp ftp> open <ip address> 81 > ftp: connect :Connection time out ftp> bye
CentOS6、CentOS7
Telnet,nc(Netcat)がインストールされていないので、curlコマンドを利用します。ポートを1個づつチェックします。
CentOS6
動作確認AMI:CentOS 6 x86_64 (2014_09_29) EBS HVM-74e73035-3435-48d6-88e0-89cc02ad83ee-ami-a8a117c0.2 (ami-13614b12)
成功時
[root@ip-10-10-10-200 ~]# curl -v telnet://<ip address>:22 * About to connect() to <ip address> port 22 (#0) * Trying <ip address>... connected * Connected to <ip address> (<ip address>) port 22 (#0) SSH-2.0-OpenSSH_6.4 (ここで [Enter] を押下する) Protocol mismatch. * Closing connection #0
失敗時
[root@ip-10-10-10-200 ~]# curl -v telnet://<ip address>:80 * About to connect() to <ip address> port 80 (#0) * Trying <ip address>... 接続がタイムアウトしました * couldn't connect to host * Closing connection #0 curl: (7) couldn't connect to host
CentOS7
動作確認AMI:CentOS 7 x86_64 (2014_09_29) EBS HVM-b7ee8a69-ee97-4a49-9e68-afaee216db2e-ami-d2a117ba.2 (ami-89634988)
成功時
[centos@ip-10-10-10-193 ~]$ curl -v telnet://<ip address>:22 * About to connect() to <ip address> port 22 (#0) * Trying <ip address>... * Connected to <ip address> (<ip address>) port 22 (#0) SSH-2.0-OpenSSH_5.3 (ここで [Enter] を押下する) Protocol mismatch. * Closing connection 0 [centos@ip-10-10-10-193 ~]$
失敗時
[centos@ip-10-10-10-193 ~]$ curl -v telnet://<ip address>:80 * About to connect() to <ip address> port 80 (#0) * Trying <ip address>... * 接続がタイムアウトしました * Failed connect to <ip address>:80; 接続がタイムアウトしました * Closing connection 0 curl: (7) Failed connect to <ip address>:80; 接続がタイムアウトしました [centos@ip-10-10-10-193 ~]$
参考元
CentOSのcurl部分は以下を参考にさせていただきました。
http://serverfault.com/questions/560081/check-port-open-without-telnet